from 工程.凌云项目.XCL激励模块.基础配置.参数配置 import *


def 发射频谱测试初始化():
    模块编号 = str(sys.UUTINFO[1])
    if gy参数.初始化标识 != '发射频谱测试初始化'+模块编号:
        gy参数.初始化标识='发射频谱测试初始化'+模块编号
    else:
        return
    gy产品.模块电源.连接()
    gy产品.模块异步串口.连接()
    gy产品.模块离散接口.连接()
    gy产品.模块CAN总线.连接()
    gy仪器.频谱仪.连接()
    gy仪器.信号源.连接()
    gy产品.射频路由.连接()
    gy方法.时间处理.延时(0.5)
    gy产品.模块CAN总线.设置发射使能('停止', 1)
    gy仪器.信号源.射频开关('关')
    gy仪器.信号源.设置外调制源('外')
    gy仪器.信号源.设置外调制模式('开')
    gy仪器.信号源.设置幅度dBm(-2 + gy参数.信号源输出补偿)
    gy仪器.频谱仪.设置扫频带宽(300e6)
    gy仪器.频谱仪.设置视频带宽(50e6)
    gy仪器.频谱仪.设置分析带宽(300e3)
    gy仪器.频谱仪.设置功率单位('DBM')
    gy仪器.频谱仪.设置参考幅度(10)
    gy仪器.频谱仪.设置触发源IMM()
    gy仪器.频谱仪.设置自动衰减()
    gy仪器.频谱仪.设置触发开关('开')
    gy仪器.频谱仪.设置内部增益开关(0)

    gy产品.射频路由.接通经衰减器输出到频谱仪()
    gy产品.射频路由.接通信号源到激励()
    gy产品.模块CAN总线.设置发射使能('发射', 1)
    print("发射频谱测试初始化完成")

def 发射频谱测试高斯cos(工作频点=1025,工作模式='高斯'):
    '''
    :param 工作频点:1025,1030,1150 ,0-抽测频点
    :param 工作模式: 高斯、cos
    :return:
    '''
    发射频谱测试初始化()
    gy仪器.信号源.射频开关('关')
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    频率=工作频点*1000000

    if 工作模式=='高斯':
        gy产品.模块CAN总线.设置功放模式('模式2')  # 77 03 00
    else:
        gy产品.模块CAN总线.设置功放模式('模式3')
    gy产品.模块异步串口.设置波形模式五()  # 占空比4%

    gy仪器.信号源.设置频率(频率)

    gy仪器.频谱仪.设置触发开关('开')
    gy仪器.频谱仪.设置扫频带宽(300e6)
    gy仪器.频谱仪.设置中心频率(频率)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')

    gy方法.时间处理.延时(1)
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    gy仪器.信号源.射频开关('开')
    for i in range(9):
        gy方法.时间处理.延时(1)
        gy仪器.频谱仪.设置寻峰值()
        峰值 = gy仪器.频谱仪.读幅度()
        if 峰值>5:
            break

    gy仪器.频谱仪.设置中心频率(频率 * 2)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波2 = gy仪器.频谱仪.读幅度()

    gy仪器.频谱仪.设置中心频率(频率 * 3)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波3 = gy仪器.频谱仪.读幅度()

    谐波抑制 = 峰值 - max([谐波2,谐波3])


    gy仪器.频谱仪.设置频率终点(频率 - 8e6)
    gy仪器.频谱仪.设置频率起点(频率 - 150e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波1 = gy仪器.频谱仪.读幅度()
    gy仪器.频谱仪.设置频率终点(频率 + 150e6)
    gy仪器.频谱仪.设置频率起点(频率 + 8e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波2 = gy仪器.频谱仪.读幅度()

    gy仪器.信号源.射频开关('关')
    最大杂波 = max([杂波1, 杂波2])
    杂波抑制 = 峰值 - 最大杂波

    print(峰值, 谐波抑制, 杂波抑制)
    gy仪器.频谱仪.设置中心频率(频率)

    gy产品.模块异步串口.关闭波形输出()
    gy产品.模块电源.监控模块静态电流(gy参数.静态电流高限)

    gy方法.测试结果保存.结果保存(杂波抑制, '杂波抑制')
    gy方法.测试结果保存.结果保存(谐波抑制, '谐波抑制')



def 发射频谱测试ATCu45(工作频点=1090):
    '''
    :param 工作频点:1000,1060,1120 ,0-抽测频点
    :param 工作模式: ATC、IFF
    :return:
    '''
    发射频谱测试初始化()
    gy仪器.信号源.射频开关('关')
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    频率 = 工作频点 * 1000000

    gy产品.模块CAN总线.设置功放模式('模式1')
    gy产品.模块异步串口.设置波形模式一()  # 占空比4%

    gy仪器.信号源.设置频率(频率)

    gy仪器.频谱仪.设置扫频带宽(500e6)
    gy仪器.频谱仪.设置中心频率(频率)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')

    gy方法.时间处理.延时(1)
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    gy仪器.信号源.射频开关('开')

    for i in range(9):
        gy方法.时间处理.延时(1)
        gy仪器.频谱仪.设置寻峰值()
        峰值 = gy仪器.频谱仪.读幅度()
        if 峰值>-6:
            break

    gy仪器.频谱仪.设置中心频率(频率 * 2)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波2 = gy仪器.频谱仪.读幅度()

    gy仪器.频谱仪.设置中心频率(频率 * 3)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波3 = gy仪器.频谱仪.读幅度()

    谐波抑制 = 峰值 - max([谐波2, 谐波3])

    gy仪器.频谱仪.设置频率终点(频率 - 100e6)
    gy仪器.频谱仪.设置频率起点(频率 - 250e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波1 = gy仪器.频谱仪.读幅度()
    gy仪器.频谱仪.设置频率终点(频率 + 250e6)
    gy仪器.频谱仪.设置频率起点(频率 + 100e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波2 = gy仪器.频谱仪.读幅度()

    gy仪器.信号源.射频开关('关')
    最大杂波 = max([杂波1, 杂波2])
    杂波抑制 = 峰值 - 最大杂波

    print(峰值, 谐波抑制, 杂波抑制)
    gy仪器.频谱仪.设置中心频率(频率)
    gy产品.模块异步串口.关闭波形输出()
    gy产品.模块电源.监控模块静态电流(gy参数.静态电流高限)

    gy方法.测试结果保存.结果保存(杂波抑制, '杂波抑制')
    gy方法.测试结果保存.结果保存(谐波抑制, '谐波抑制')



def 发射频谱测试IFF6u4(工作频点=1000):
    '''
    :param 工作频点:1000,1060,1120 ,0-抽测频点
    :param 工作模式: ATC、IFF
    :return:
    '''
    发射频谱测试初始化()
    gy仪器.信号源.射频开关('关')
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    gy产品.模块CAN总线.设置功放模式('模式1')
    gy产品.模块异步串口.设置波形模式三()  # 占空比4%

    频率 = 工作频点 * 1000000
    gy仪器.信号源.设置频率(频率)

    gy仪器.频谱仪.设置扫频带宽(500e6)
    gy仪器.频谱仪.设置中心频率(频率)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')

    gy方法.时间处理.延时(1)
    gy产品.模块电源.设置电流(gy参数.发射电流高限)
    gy仪器.信号源.射频开关('开')

    for i in range(9):
        gy方法.时间处理.延时(1)
        gy仪器.频谱仪.设置寻峰值()
        峰值 = gy仪器.频谱仪.读幅度()
        if 峰值>1:
            break

    gy仪器.频谱仪.设置中心频率(频率 * 2)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波2 = gy仪器.频谱仪.读幅度()

    gy仪器.频谱仪.设置中心频率(频率 * 3)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    谐波3 = gy仪器.频谱仪.读幅度()

    谐波抑制 = 峰值 - max([谐波2, 谐波3])

    gy仪器.频谱仪.设置频率终点(频率 - 100e6)
    gy仪器.频谱仪.设置频率起点(频率 - 250e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波1 = gy仪器.频谱仪.读幅度()
    gy仪器.频谱仪.设置频率终点(频率 + 250e6)
    gy仪器.频谱仪.设置频率起点(频率 + 100e6)
    gy仪器.频谱仪.设置最大保持开关('关')
    gy仪器.频谱仪.设置最大保持开关('开')
    gy方法.时间处理.延时(2)
    gy仪器.频谱仪.设置寻峰值()
    杂波2 = gy仪器.频谱仪.读幅度()

    gy仪器.信号源.射频开关('关')
    最大杂波 = max([杂波1, 杂波2])
    杂波抑制 = 峰值 - 最大杂波

    print(峰值, 谐波抑制, 杂波抑制)
    gy仪器.频谱仪.设置中心频率(频率)
    gy产品.模块异步串口.关闭波形输出()
    gy产品.模块电源.监控模块静态电流(gy参数.静态电流高限)

    gy方法.测试结果保存.结果保存(杂波抑制, '杂波抑制')
    gy方法.测试结果保存.结果保存(谐波抑制, '谐波抑制')


if __name__=='__main__':
    pass
    sys.UUTINFO = [0, 2]
    # CAN总线接口测试初始化()
    # CAN总线BIT检测("CANA")
    # CAN总线电子标签测试()
    # CAN总线状态回传请求()

    # 发射使能测试("CANA")
    # 功能配置测试()
    # 发射功率自检测试()
    发射频谱测试初始化()
    # 发射频谱测试高斯cos(1025)
    发射频谱测试ATCu45()
    # 发射频谱测试IFF6u4()
    # 发射功率及脉冲特性测试2ATC()
    # 发射功率及脉冲特性测试2IFF()
    # i=1
    # 时间 = (-2e-6) + (i * 1e-7)
    # gy仪器.峰值功率计.设置MARK1位置(时间)
    # 输出脉冲波形测试初始化()
    # 输出脉冲波形测试高斯cos(1025,'cos')
    # 输出脉冲波形测试IFF()